package com.wwh.Thread;
/*
 * 方式二:通过实现Runnable接口来创建线程
 * 
 * 对比 继承的方式  vs 实现的方式
 * 1.联系 : public void Thread implements Runnable
 * 2.哪个方式更好呢: --->实现的方式优于继承的方式
 * 		why-->①实现避免了java中继承的局限性
 * 			  ②如果多个线程操作同一份资源(或数据).更适合使用实现的方式
 * 
 */
//1.创建一个实现Runnable接口的类
class PrintNum implements Runnable{
	//2.实现接口的抽象方法
	public void run() {
		//子类执行的代码
		for(int i = 1;i <= 100;i++){
			if(i % 2 != 0){
				System.out.println(Thread.currentThread().getName() + ":" + i);
			}
		}
	}
}

public class SubRunnable {
	public static void main(String[] args) {
		//3.创建一个Runnable接口实现类的对象
		PrintNum p = new PrintNum();
		//用实现Runnable接口的类创建出线程的实例,启动线程时不能用 对象.start();需用下方的方式来启动
		//4.将此对象作为形参传递给Thread类的构造器,创建Thread类的对象中,此对象即为一个线程
		Thread t1 = new Thread(p);
		//5.启动线程,执行Thread对象生成是构造器形参的对象的run();
		t1.start();
		//在创建一个线程
		Thread t2 = new Thread(p);
		t2.start();
	}
}
